import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

const module = {
  // 设置状态
  state: {
    count: 0,
    arr: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100],
    userId: "",
    sessionId: "",
  },
  // 用来存放修改state值的所有事件
  mutations: {
    change(state, n) {
      state.count += n;
    },
    abc(state) {
      state.count++;
    },
    getUserId(state, v) {
      state.userId = v;
    },
    getSessionId(state, v) {
      state.sessionId = v;
    },
  },
  // 类似vue中的计算属性 他主要针对状态进行操作
  getters: {
    getArr(state) {
      return state.arr.filter((itme) => {
        return itme % 2 == 0;
      });
    },
  },
  // Action 提交的是 mutation，而不是直接变更状态。
  // Action 可以包含任意异步操作。
  actions: {
    abc(context) {
      console.log(context.state.count);
      context.commit("abc");
    },
  },
};

const store = new Vuex.Store(module);

export default store;
